package controllers;

import java.sql.Date;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

import models.Evento;
import models.Presenca;
import models.Usuario;
import play.mvc.Controller;

public class PresencaController extends Controller {
	
	public static void index() {
		if(! Application.isLogged()) return;

		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
        render("Application/atribuirPresenca.html", menu, rodape);
    }
	
	public static void consultaFrequencia1() {
		String msg = "O codigo do usuario nao foi informado!";
		
		// Java Script mostrando a mensagem de erro!
        String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
        		script += "alert ( \" " + msg + "\" ) </script> ";
        CoralistaController.exibicao(script);
	}
	
	public static void consultaFrequencia2(int codUsuario) {
		boolean consulta = false;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		render("Application/consultaFrequencia.html", consulta, codUsuario, menu, rodape);
	}
	
	public static void consultaFrequencia3(int codUsuario) {
		Date dataInicial, dataFinal;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		String data = params.get("inicio");
		try {
        	dataInicial = new Date( new SimpleDateFormat("dd/MM/yyyy").parse(data).getTime() );
        }
        catch(ParseException ex) {
        	String msg = "A data nao esta em formato valido. O formato correto e dd/MM/aaaa.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/consultaFrequencia.html", script, menu, rodape);
            
        	return;
        }
		
		data = params.get("final");
		try {
        	dataFinal = new Date( new SimpleDateFormat("dd/MM/yyyy").parse(data).getTime() );
        }
        catch(ParseException ex) {
        	String msg = "A data nao esta em formato valido. O formato correto e dd/MM/aaaa.";
        	
        	// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/consultaFrequencia.html", script, menu, rodape);
            
        	return;
        }
		
		try {
			List<Evento> lis = Presenca.consultaFrequencia(codUsuario, dataInicial, dataFinal);
			
			int presenca = lis.size();
			int falta = Evento.rangeDate(dataInicial, dataFinal).size() - presenca;
			int porcentagem = 0;
			if(presenca+falta != 0)
				porcentagem = (100 * presenca) / (presenca+falta);
			
			boolean consulta = true;
			
			render("Application/consultaFrequencia.html", lis, consulta, presenca, falta, porcentagem, menu, rodape);
		}
		catch(SQLException ex) {
			
		}
	}
	
	public static void exibicao(int codigoEvento) {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Usuario> lis = Usuario.all();
		
        	render("Application/atribuirPresenca.html", lis, codigoEvento, menu, rodape);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            
            //redirect("Application/cadEvento.html");
            
            return;
		}
    }
	
	public static String gerarCheckBox(int codigoUsuario){
		return ("/presencacontroller/gerarcheckbox?codigoUsuario="+String.valueOf(codigoUsuario));
	}
	
	public static void setarPresencas(int codigoEvento) {
		if(! Application.isLogged()) return;
		
		String menu;
    	String rodape = Application.rodapebasic;
    	if(Application.sessao.get("tipo").compareTo("0") == 0){
    		menu = Application.menubasic;
    	}
    	else{
    		menu = Application.menufull;
    	}
		
		try {
			List<Usuario> lis = Usuario.all();
		
			for (int i=0; i < lis.size(); i++){
				//renderText(params.get( gerarCheckBox( lis.get(i).getCodigo() ) ));
				
				String parametro = params.get( gerarCheckBox( lis.get(i).getCodigo() ) );
				if(parametro == null) continue;
				
				if ( parametro.compareTo("on") == 0 ) {
					Presenca p = new Presenca(lis.get(i).getCodigo(), codigoEvento);
					
					p.save();
				}
				
			}
			
			// Deu certo!
			String msg = "A presenca foi submetida corretamente!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            EventoController.exibicao(script);
		}
		catch(SQLException ex) {
			String msg = "O codigo SQL teve um comportamento inesperado!";
    		
    		// Java Script mostrando a mensagem de erro!
            String 	script = "<script language=\"javascript\" type=\"text/javascript\">";
            		script += "alert ( \" " + msg + "\" ) </script> ";
            render("Application/cadEvento.html", script, menu, rodape);
            return;
		}
	}

}
